package com.cj.mobile.iabp.mvp.contract;

import com.cj.mobile.iabp.mvp.model.entity.DictInfo;
import com.cj.mobile.iabp.mvp.model.entity.RoundsInfo;
import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView;

import java.util.List;

import io.reactivex.Observable;

/**
 * ================================================
 * Description:
 * <p>
 * Created by MVPArmsTemplate on 2025/09/28 15:20
 * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
 * <a href="https://github.com/JessYanCoding">Follow me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
 * <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
 * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
 * ================================================
 */
public interface AddRoundsInfoContract {
    //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
    interface View extends IView {
        // 显示Loding
        void showLoadingSubmit();

        // 隐藏Loding
        void hideLoadingSubmit();

        void showSurgeryInfo(String code, String name, String area, String bedNo, String machineCode, RoundsInfo info);

        void loadWardRounds(List<DictInfo> list);
    }

    //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
    interface Model extends IModel {
        /**
         * 获取字典
         *
         * @param type 诊断type=1；手术type=2；医生type=3
         */
        Observable<List<DictInfo>> getDictList(String type);

        Observable<List<String>> upload(List<String> files);

        /**
         * 新增查房信息
         *
         * @param patienId    患者id
         * @param doctorId    医生id
         * @param regCode     注册代码
         * @param patientName 患者姓名
         * @param bedCode     所属床位
         * @param roomCode    所属病房
         * @param doctorName  医生姓名
         * @param place1      胸片位置
         * @param place2      胸片位置调整
         * @param roundTime   查房时间
         * @param fbType      反搏效果
         * @param gssType     肝素水量
         * @param yali        压力带压力
         * @param haiqi       氦气量
         * @param lessL       下肢缺血 - 安装侧
         * @param lessR       下肢缺血 - 对侧
         * @param ecmo        ECMO时机
         * @param mashine     机器代码
         * @param special     特殊情况详述
         * @param checkTime   检验日期
         * @param ast         AST
         * @param alt         ALT
         * @param cr          肌酐Cr
         * @param egfr        eGFR
         * @param myo         肌红蛋白
         * @param clac        乳酸cLac
         * @param ga          肌钙蛋白
         * @param leftSize    左室舒张末期内径
         * @param leftScore   左室射血分数
         * @param images      异常情况拍照
         */
        Observable<Integer> addRoundsInfo(String pre, String patienId, String doctorId, String regCode, String patientName,
                                          String bedCode, String roomCode, String doctorName, String place1, String place2,
                                          String roundTime, String fbType, String gssType, String yali, String haiqi,
                                          List<String> lessL, List<String> lessR, String ecmo, String mashine, String special,
                                          String checkTime, String ast, String alt, String cr, String egfr, String myo, String clac,
                                          String ga, String leftSize, String leftScore, List<String> images);

        Observable<Integer> updateRounds(String pre, String id, String patienId, String doctorId, String regCode, String patientName,
                                         String bedCode, String roomCode, String doctorName, String place1, String place2,
                                         String roundTime, String fbType, String gssType, String yali, String haiqi,
                                         List<String> lessL, List<String> lessR, String ecmo, String mashine, String special,
                                         String checkTime, String ast, String alt, String cr, String egfr, String myo, String clac,
                                         String ga, String leftSize, String leftScore, List<String> images);
    }
}